A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to synchronizing data between multiple datasets. More particularly, the present invention relates to methods for synchronizing data between mobile wireless communication devices and synchronization servers.
Increasingly, people are discovering the power of computer-based personal information managers (PIMs) for managing appointments and other personal information such as tasks (xe2x80x9cto-do""sxe2x80x9d) and addresses. Individuals employ PIMs for example on personal computers (PCs), handheld electronic information devices, and World Wide Web servers accessed via browsers. Examples of PC-based PIMs include the Sidekick(copyright) software application, which is available from Starfish(copyright) Software, Inc. (xe2x80x9cStarfishxe2x80x9d), the present assignee. Examples of handheld-information-device-based PIMs include the StarTAC(copyright) clipOn Organizer device and the REX PRO(trademark) organizer devicexe2x80x94both of which include licensed technology from Starfishxe2x80x94as well as the popular Palm family of organizer devices. Examples of xe2x80x9cWeb-basedxe2x80x9d PIMs include an online PIM called TrueSync.com, provided by Starfish. Starfish(copyright), Sidekick(copyright), and TrueSync(copyright) are registered trademarks of Starfish. StarTAC(copyright) is a registered trademark of Motorola, Inc. of Schaumburg, Ill. REX(trademark) m and REX PRO(trademark) are trademarks of Franklin Electronic Publishers of Burlington, N.J. Palm organizers are produced by Palm, Inc. of Santa Clara, Calif.
The use of PIMs is ever expanding, and it has become common for an individual person to keep multiple xe2x80x9ccopiesxe2x80x9d of the same information on separate devices. For example, a user may keep his or her appointments in a dataset (i.e., collection of data) on a desktop PC at work, in a dataset on a notebook PC at home, and also in a dataset on a handheld device while in the field. Such a user is free to change the information in any one of these datasets independently of the other datasets. By doing so, the user may cause the data in the multiple datasets to differ from one another, so that the datasets are unsynchronized. For example, the user may enter a person""s home address in one of the datasets, but the other datasets may not contain the person""s home address. Alternatively, the user may change a person""s telephone number in one of the datasets, so that the one dataset has the user""s new telephone number, while the other datasets have the person""s old telephone number. The user may cause the datasets to be the same again, by synchronizing the multiple datasets to bring them back into equivalence. To perform such synchronization, the user generally uses a synchronization system, such as one that is described in commonly-owned U.S. Pat. No. 5,519,606, which is hereby incorporated by reference.
As modern mobile wireless communication devices, such as pagers and cellular phones, are gaining capabilities and becoming information devices in their own right, e.g. by supporting PIM functionality, it is desirable for such devices to also support synchronization of information (e.g. PIM information, downloaded information, and the like) stored on the device. In particular, it is desirable that such wireless communication devices use their inherent wireless communication abilities for synchronization.
Many existing synchronization systems exchange data over a direct, wired connection between two devices, which provides a fast, accurate and reliable interface between the two devices. Exchanging data over a wireless interface is generally not so easy or predictable. Errors are more likely to occur during transmission of data over a wireless interface, communication sessions may be interrupted, data packets may be lost, data transmission may be delayed or slow, data transmissions may be intercepted by eavesdroppers, data may arrive at its destination in a different order from the order in which it was sent from its source, and many other problems may adversely affect the wireless transmission of data. Many existing synchronization systems may not work effectively in such an environment. In addition, wireless devices generally have limited processing, capabilities and storage space, and limited access to software upgrades, which further complicates the process for synchronizing data with a wireless device.
What is needed are a wireless communication system and methods for managing synchronization between a wireless communication device and a synchronization server. In particular, what is needed are such a system and methods that are efficient, cost-effective, and convenient for the user, that work within the processing, storage and upgrade limitations of a wireless device, and that will work effectively and reliably in a wireless environment.
The present invention provides methods for synchronizing data between multiple datasets on multiple devices. In one method, a communication interface, including a wireless interface, is established between a first device and a second device. The first device sends its changed data values to the second device. The second device resolves conflicts between the changed data values received from the first device and the second device""s own changed data values. The second device incorporates the changed data values received from the first device into its own dataset if the received data values survive the conflict resolution. The second device also sends those of its own changed data values that survived the conflict resolution to the first device. The first device incorporates the changed data values that it receives from the second device into the first dataset.
In specific embodiments of the present invention, the multiple devices may include a wireless telephone and a sync server, and the communication interface may comprise a data call between the wireless telephone and the sync server. The datasets may contain PIM data and one or more of the multiple devices may include a PIM application. In one embodiment, one device may need to log on to the second device before a synchronization can be performed, where logging on requires that the first device send log on information to the second device and the second device confirms that the log on information is valid. In another embodiment, a conflict resolution may occur between two changed data values if both of the changes relate to the same data record. In this case, timestamps indicating the times at which each of the data values were changed may be compared, and data from the earlier changed data value may be discarded, and the more recently changed data value may survive the conflict resolution.
Other embodiments of the invention may include a method of sending data value changes from a first device to a second device that involves repeating the following steps until the second device receives all of the data value change from the first device: the first device sends to the second device one or more changes from its set of data value changes that have not yet been received by the second device; the second device sends a message to the first device acknowledging receipt of whichever changes the second device actually received; and the first device determines which, if any, of its set of data value changes have not yet been received by the second device, based on the acknowledgement message from the second device. In one embodiment, the second device sends the acknowledgment message in response to an acknowledgment request sent from the first device to the second device. Other embodiments may also involve the first device determining if a change received from the second device involves creating a new data record in the first device and, if so, sending a message to the second device indicating the record ID within the first device for the new data record. Also, some embodiments may include duplicate resolution between the data values changes of the first device and the data value changes of the second device.
These synchronization methods may be initiated in response to various occurrences, such as in response to a user of one of the devices activating a synchronization key or otherwise specifically activating a synchronization function, in response to a timer interrupt indicating the expiration of a time interval or the reaching of a specific time of day, or in response to a user entering a data value change at one of the devices. Also, in some embodiments, the devices may send data value changes and other messages in the form of data packets in a packet switching network. In some embodiments, before a first device sends its data value changes to a second device, the first device may determine whether a previous synchronization attempt was not completed successfully and, if a previous attempt was not completed successfully, the first device may complete the previous synchronization attempt.
In one embodiment of the present invention, each of two devices sends data value changes to the other device in response to receiving one or more data value changes, and one of the two devices may resolve conflicts between its own dataset and data value changes received from the other device, as it receives those changes from the other device. In this embodiment, each of the multiple devices may receive changes from users of the device or it may receive changes from other devices. In one embodiment, in response to a change being made at a second device, the second device sends a message to a first device indicating that the second device has a chance for the dataset of the first device and the second device awaits a message from the first device requesting that the second device send the change, before the second device sends the change to the first device. In another embodiment, each of two devices may perform conflict resolution between its own dataset and data value changes received from the other of the two devices.